package com.laolang.ssh.service;


import java.util.List;

/**
 * 基本CRUD接口
 * 
 * @author 小代码
 * @version 1.0
 *
 * @param <T>
 *            需要持久化的实体类
 */
public interface BaseService<T> {

	/**
	 * 保存
	 *
	 * @param t
	 *            实体类
	 */
	public void save(T t);

	/**
	 * 更新
	 *
	 * @param t
	 *            实体类
	 */
	public void merge(T t);

	/**
	 * 根据ID删除
	 *
	 * @param id
	 *            要删除的实体类的ID
	 */
	public void delete(Integer id);

	/**
	 * 通过ID查询
	 *
	 * @param id
	 *            要查询的实体的ID
	 * @return 查询到的实体类，如果未查询到，则返回null
	 */
	public T findById(Integer id);

	/**
	 * 查询所有
	 *
	 * @return 查询到的实体列表
	 */
	public List<T> findAll();

	/**
	 * 查询所有
	 *
	 * @param firstResult
	 *            第几页
	 * @param maxResults
	 *            每页记录数
	 * @return 查询到的实体列表
	 */
	public List<T> findAll(int firstResult, int maxResults);

	/**
	 * 系统记录数
	 *
	 * @return 记录数
	 */
	public Long findcount();

	/**
	 * 根据每页记录数，计算共有多少页
	 *
	 * @param size
	 *            每页记录数
	 * @return 页数
	 */
	public Long findpages(Integer size);
}